class A:
    def __init__(self):
        print("哈罗，我是A~")


class B1(A):
    def __init__(self):
        super().__init__()
        print("哈罗，我是B1~")


class B2(A):
    def __init__(self):
        super().__init__()
        print("哈罗，我是B2~")


class C(B1, B2):
    def __init__(self):
        super().__init__()
        print("哈罗，我是C~")


# MRO :方法解析顺序
# Method
# Resolution
# Order
# 查找一个类的 MRO 的方法有2种：
# 一：类名.mro()方法

# [<class '__main__.C'>, <class '__main__.B1'>, <class '__main__.B2'>, <class '__main__.A'>, <class 'object'>]
print(C.mro())

# [<class '__main__.B1'>, <class '__main__.A'>, <class 'object'>]
print(B1.mro())

print("=" * 100)

# 二：mro 属性
print(C.__mro__)
print(B1.__mro__)
